package com.itheima.myfile;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;

/**
 * @Author 王加鑫
 * @Date 2021/5/19 9:35
 * @Version 1.0
 */
public class FileTest4 {
    public static void main(String[] args) throws IOException {
        File file = new File("D:\\MO");
        //deleteFile(file);
        //String:文件后缀名  Integer:文件出现的次数
        HashMap<String,Integer> map = new HashMap<>();
        getCount(file,map);
        System.out.println(map);


    }

    /**
     * 删除文件夹下的所有数据
     * @param file
     */
    private static void deleteFile(File file) {
        //获取文件夹所有的文件
        File[] files = file.listFiles();
        //遍历所有文件夹和文件
        for (File file1 : files) {
            //如果是文件就删除
            if(file1.isFile()){
                file1.delete();
            }else {
                //如果不是空的文件夹和文件就继续递归遍历文件夹下的子文件夹
                deleteFile(file1);
            }
        }
        //删除空文件夹
        file.delete();
    }

    /**
     * 根据文件后缀名查看所有文件的次数
     */
    private static void getCount(File file,HashMap<String,Integer> map){
        File[] files = file.listFiles();
        for (File file1 : files) {
            //当file1是一个文件的时候再查询次数
            if(file1.isFile()){
                //获取文件名
                String file1Name = file1.getName();
                //根据 . 来分割String字符串
                String[] fileArr = file1Name.split("\\.");
                //当文件名是标准文件名时(a.txt)
                if(fileArr.length == 2){
                    //获取文件后缀名
                    String fileEndName = fileArr[1];
                    //当集合遍历的时候查询到后缀名的时候增加次数
                    if(map.containsKey(fileEndName)){
                        Integer count = map.get(fileEndName);
                        count++;
                        map.put(fileEndName,count);
                    }else {
                        //程序运行到这里,说明该后缀名第一次出现,次数为1
                        map.put(fileEndName,1);
                    }
                }
            }else {
                //当file1是一个文件夹的时候,继续递归遍历直到是一个文件为止
                getCount(file1,map);
            }
        }
    }
}
